package com.utils.collection;

import java.util.ArrayList;
import java.util.List;

public class CollectionUtil {

	/**
	 * 将list拆分成固定大小的块
	 * 
	 * @param list
	 * @param blockSize
	 * @return
	 */
	public static <T> List<List<T>> splitList(List<T> list, int blockSize) {
		List<List<T>> result = new ArrayList<List<T>>();
		int index = 0;
		while (index < list.size()) {
			int to = index + blockSize;
			if (to > list.size())
				to = list.size();
			result.add(list.subList(index, to));
			index = to;
		}
		return result;
	}

	/**
	 * 将几个字符串数组排列组合
	 * 
	 * @param list
	 * @param regex 分隔符
	 * @return
	 */
	public static  void doExchange(List<String[]> arrayLists,String regex){
        int len=arrayLists.size();
        //判断数组size是否小于2，如果小于说明已经递归完成了，否则你们懂得的，不懂？断续看代码
        if (len<2){
        	//this.newArrayLists=arrayLists;
            return;
        }
        //拿到第一个数组
        String[] arr0= (String[]) arrayLists.get(0);
        int len0=arr0.length;

        //拿到第二个数组
        String[] arr1= (String[]) arrayLists.get(1);
        int len1=arr1.length;

        //计算当前两个数组一共能够组成多少个组合
        int lenBoth=len0*len1;

        //定义临时存放排列数据的集合
        String[] temp=new String[lenBoth];
        //第一层for就是循环arrayLists第一个元素的
        int index=0;
        for (int i=0;i<len0;i++){
            //第二层for就是循环arrayLists第二个元素的
            for (int j=0;j<len1;j++){ 
            	temp[index]=arr0[i]+regex+arr1[j];
            	index++;
            }
        }
        arrayLists.remove(0);
        arrayLists.remove(0);
        arrayLists.add(0, temp); 
        //你没看错，我们这整个算法用到的就是递归的思想。
        doExchange(arrayLists,regex);
    }
	
}


	

